package cn.snmp.mutual.data;
import java.io.Externalizable;
import java.io.Serializable;
import java.rmi.Remote;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;

/**
 * @since 2018.9.16
 * @author dengkn
 * 默认资源容器
 */
public interface ResObject extends Remote, Externalizable {
	/**
	 * Original datat
	 * @param key
	 * @param value
	 * @return true/false
	 * */
	boolean setPropertyOnlyOriginal(String key, String value);

	/**
	 * Modify Keys
	 * @param
	 * @return value
	 * */
	ArrayList<String> getModifyKeys();

	/**
	 * get Current Modify Keys
	 * @param
	 * @return key
	 * */
	ArrayList<String> getCurrentModifyKeys();

	/**
	 * get Original Property
	 * @param key
	 * @return value 
	 * */
	String getOriginalProperty(String key);

	/**
	 * get Display Property
	 * @param key
	 * @return String 
	 * */
	String getDisplayProperty(String key);

	/**
	 * get Modify Property
	 * @param key key
	 * @return String 
	 * */
	String getModifyProperty(String key);

	/**
	 *get Property
	 * @param key key
	 * @return String 
	 * */
	String getProperty(String key);

	/**
	 * getIntProperty
	 * @param key key
	 * @return String 
	 * */
	int getIntProperty(String key);

	/**
	 * get Double Property
	 * @param key key
	 * @return String 
	 * */
	double getDoubleProperty(String key);

	/**
	 * get Boolean Property
	 * @param arg0 key
	 * @return String 
	 * */
	boolean getBooleanProperty(String arg0);

	/**
	 * get Original Property
	 * @param arg0 key
	 * @return String 
	 * */
	float getFloatProperty(String arg0);

	/**
	 * get Original Property
	 * @param arg0 key
	 * @return String 
	 * */
	Date getDateProperty(String arg0);

	/**
	 * get Original Property
	 * @param arg0 key
	 * @param arg1 value
	 * @return String 
	 * */
	boolean setProperty(String arg0, String arg1);

	/**
	 * get Original Property
	 * @param arg0 key
	 * @param arg1 arg1
	 * @param arg2 arg2
	 * @return String 
	 * */
	boolean setProperty(String arg0, String arg1, String arg2);

	/**
	 * get Original Property
	 * @param arg0 key
	 * @param arg1 key
	 * @return String 
	 * */
	boolean setProperty(String arg0, ResObject arg1);

	/**
	 * get Original Property
	 * @param arg0 key
	 * @param arg1 key
	 * @return String 
	 * */
	void setDisplayProperty(String arg0, String arg1);

	/**
	 * get Original Property
	 * @return String 
	 * */
	String getResType();

	/**
	 * get Original Property
	 * @param arg0 key
	 * @return String 
	 * */
	void setResType(String arg0);

	/**
	 * get Original Property
	 * @return String 
	 * */
	String getResID();

	/**
	 * get Original Property
	 * @param arg0 key
	 * @return String 
	 * */
	void setResID(String arg0);

	/**
	 * get Original Property
	 * @return String 
	 * */
	String getName();

	/**
	 * get Original Property
	 * @return String 
	 * */
	String getFullName();

	/**
	 * get Original Property
	 * @return String 
	 * */
	ObjService toLogObjService();

	/**
	 * get Original Property
	 * @return String 
	 * */
	String toString();

	/**
	 * get Original Property
	 * @param arg0 key
	 * @return String 
	 * */
	void updateModify(boolean arg0);

	/**
	 * get Original Property
	 * @param arg0 key
	 * @param arg1 value
	 * @return String 
	 * */
	void setExtendProperty(String arg0, String arg1);

	/**
	 * get Original Property
	 * @param arg0 arg0
	 * @return String 
	 * */
	String getExtendProperty(String arg0);

	/**
	 * get Original Property
	 * @return String 
	 * */
	Iterator<String> getExtendKeys();

	/**
	 * get Original Property
	 * @return String 
	 * */
	void clearModifykeys();

	/**
	 * gset Tag Object
	 * @param arg0 arg0
	 * 
	 * */
	void setTagObject(Serializable arg0);

	/**
	 * get Original Property
	 * @return Serializable 
	 * */
	Serializable getTagObject();
}